package com.suke.czx.modules.income.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.suke.czx.modules.income.entity.Income;
import com.suke.czx.modules.income.entity.IncomeSearchBo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 应用模块名称: 收支
 * 代码描述: 收支持久层
 * copyright: AUZAR ALL RIGHTS RESERVED
 * company: AUZAR
 *
 * @author: 颜米晨
 * @date: 2021/09/09 10:10:47
 */
public interface IncomeMapper extends BaseMapper<Income> {

    /**
     * 获取计划收支总记录数
     * @param incomeSearchBo 查询BO
     * @return 计划收支总记录数
     */
    Integer countParentIncome(IncomeSearchBo incomeSearchBo);

    /**
     * 分页查询收支列表
     * @param incomeSearchBo 查询BO
     * @param from 偏移量
     * @param limit 返回最大记录数
     * @return 收支数据集
     */
    List<Income> pageParentIncomeList(@Param("incomeSearchBo") IncomeSearchBo incomeSearchBo, @Param("from") Integer from, @Param("limit") Integer limit);

    /**
     * 获取实际收支查询结果集
     * @param parentIncomeIdList 计划收支编码数据集
     * @return 实际收支结果集
     */
    List<Income> childrenIncomeList(List<Long> parentIncomeIdList);

    /**
     * 校验该收支是否为存在实际收支的计划收支
     * @param incomeId 收支编码
     * @return 计划收支关联的实际收支记录数
     */
    Integer getIfHasChildrenIncome(Long incomeId);

    /**
     * 删除收支
     * @param incomeId 收支编码
     * @param userId 操作者编码
     */
    void updateDelIncome(@Param("incomeId") Long incomeId, @Param("userId") Long userId);

}
